mogapediafandomcom_fr-20200214-history
Blog utilisateur:Houmgaor/Scripts en vrac
Ce blog n'a pas réellement d'intérêt à être partagé et sert surtout sert à stocker mes scripts qui fonctionnent quelque part. Ils peuvent cependant être réutilisés tout ou partie, attention cependant, il est conseillé de me consulter avant sur leur fonctionnement. AutoWikiBrowser (C#) Scripts utilisés pour la modification de masse, avec un module C# et AutoWikiBrowser. Page splitter Utilisé pour séparer les pages d'objet. Si le booléen "split" est faux, le script détecte les erreurs sur les pages d'objet. Si il est vrai, il va en plus séparer et enregistrer la page sur l'ordinateur de l'utilisateur. Est issu de la fusion des scripts "error finder" et de l'ancien "page splitter". Le contenu du fichier "Table.txt" se trouve sur la page Réorganisation des pages d'objet/Table.txt. Page uploader Fonctionne avec le page splitter. Une fois que les pages ont bien été séparées et importées, son rôle est simplement de les mettre en ligne. Objects links Code créé pour simplifier la génération de liens interwiki pour les objets. Ces pages n'existant que sur les wikis français et anglais, le script ne fonctionne qu'avec ces deux wikis. Il génère les liens interlangue sur le wiki anglais, et enregistre les équivalences. JavaScript Scripts lancés depuis une page internet à l'aide d'un code JavaScript. Les composants d'armes Crée un tableau pour les composants nécessaires à la création d'armes MH4U, utilisé sur MH4U : Epée longue - Liste des composants. Exemples Lua Exemples de scripts pouvant être utilisés avec des modules en Lua. Récupération d'une page Récupère tout le texte d'une page et le renvoi. Python Scripts utilisés avec un client Python (3.6), et l'API de MediaWiki. Réorganisation des composants de monstre Enregistre et vérifie les pages de composant de monstre du wiki. Utilise des bases de données sous format texte et XML, tout en UTF-8. " with open('Exchange file.txt', 'w') as f : f.write(text) def rename_descriptions(title='Template:Monster Description', lim=10000) : """ N'a rien a voir, changement de "Double Cross" à Generations pour Monster Description""" for i in m.get_transclusions(title, lim, redir='nonredirects', ns='0') : i'text' = m.get_text(i'title')01 print(i'title') pre_tem = parse_template('Monster Description', i'text', True) if "Monster Hunter Double Cross" not in pre_tem : print(pre_tem-200:) continue n_tem = pre_tem.replace("Monster Hunter Double Cross", "Monster Hunter Generations Ultimate", 1) #if input("Proceed (ok) ? ") 'ok' : r = m.send_page(i'title', i'text'.replace(pre_tem, n_tem, 1), summary="Remplacement de Double Cross par Generations " + "Ultimate dans le modèle Modèle:Monster Description.", minor=True) if r: print("Succès") sleep(5) else : print("Error") break def correct_page(page, split, data, replac) : """ Vérifie et corrige la page (si possible). S'occupe notamment du nom du composant dans le modèle principal, remplace les par """ if split {}: return text = page'text' text = re.sub(r'^ (?: )?\s*\\s*(.+)\s*\\s*(\?\:?)\s* (?: )?$', r' \1 \2 ',text) summa = "" #tabber = True if re.search(r'\', text, re.M|re.I) else False for game, game_text in split0.items() : if (not game_text.strip()): if (input("Section {} vide, souhaitez-vous l'effacer ? (oui/non)\ ".format(game)) 'oui'): text = re.sub("(?:\|-\|)?\s*" + game + "\s*=\s*", "", text) summa = " Suppression de la section " + game; elif (text.count(game_text) != 1): raise Warning("Le texte de l'opus {} apparaît plusieurs fois ({} \ fois) dans la page, est-ce normal ?\ ".format(game, text.count(game_text))) sect = texttext.index(game_text):text.index(game_text)+len(game_text) p_sect = sect if game not in games : if game.upper() in games : sect = sect.replace(game, game.upper()) summa += " {} → {}".format(game, game.upper()) game = game.upper() else : continue datum = data+ 1 p = re.compile(r'\|(\s*)Nom(\s*)=\s*(^\+)', re.M) if p.search(sect) : title = p.search(sect).group(3) title = title.replace('\n', '').strip() elif p.search(split1): if len(split0) > 1: # title appears in previous text, however they are multiple # games, we check if the object has the same name in each game ok = True for i in split0: if p.search(split1).group(3) + '\n\ ' not in data+ 1: print("Plusieurs sections peuvent correspondre au \ titre, arrêt. ({} pas dans les données {})".format(p.search(split1).group(3), i)) ok = False break if not ok: break title = p.search(split1).group(3) title = title.replace('\n', '').strip() # TODO : ligne très bizarre, à vérifier sect = p_sect = split1 game = 'principale' datum = data[games.index(tuple(split0.keys())0) + 1] else : print("Titre introuvable !") continue if title not in datum : rep = replace_and_find(title, datum, replac) esc = re.escape(title) r = re.compile('^(' + esc +')$', re.M|re.I) if len(rep) 1 : sect = p.sub(r'|\1Nom\2= ' + rep0 + '\n', sect) summa += " {} → {} (dans l'infobox principale, section {})\ ".format(title, rep0, game) elif len(rep) > 1 : print("Plusieurs remplacements possibles : ", rep) ans = "autre" while ans "autre" : # TODO : has to be done print("PAS encore implémenté !!!!!!!!!!!") ans = input('Lequel choisisez vous (entrez son numéro, ou ' '"autre/passer") ? ') if ans.isdigit() : ans = repint(ans) elif ans 'passer' : return elif ans 'autre' : ans = input("Nouveau nom (annuler) : ") ans = "autre "if ans 'annuler' else ans summa += " {} → {} (dans l'infobox \ principale, section {})".format(title, r, game) sect = p.sub(r'|\1Nom\2= ' + rep0 + '\n', sect) elif r.search(datum) : sect = p.sub(r'|\1Nom\2= ' + r.search(datum).group(0) + '\n', sect) summa += " {} → {} (dans l'infobox principale, section {})\ ".format(title, r.search(datum).group(0), game) text = text.replace(p_sect, sect) if text != page'text' : m.send_page(page'title', text, summa + " Changement éventuel des " "niveaux de titre. surveillé par " "Houmgaor. ") say("La page " + page'title' + "a été envoyée") sleep(10) # print("Ancien texte :\n", page'text', "\n\nNouveau texte :\n", text) m.login() #rename_descriptions() proceed_components(5000, correct=True) |} Fonctions générales Effectue des actions générales avec MediaWiki : identification, vérification de l'existence d'une page, modification d'une page, récupération du texte d'une page. Lieur interlangue Le but de ce script est de créer des liens interlangue facilement entre les pages des différents wikis. Réorganisation des pages de composants de monstre Vérifie les pages de composant de monstre, et les découpe pour enlever le tabber. Utilise le script media_moga, et des fichiers texte contenant tous les objets de MH3U, MH4U et MHGen. Catégorie:Billets de blog